package com.wang.blog.controller;

import com.wang.blog.constant.Base;
import com.wang.blog.constant.ResultCode;
import com.wang.blog.model.MeTag;
import com.wang.blog.ov.TagVO;
import com.wang.blog.result.Result;
import com.wang.blog.service.TagService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 标签api
 *
 * @author shimh
 * <p>
 * 2018年1月25日
 */
@RestController
@CrossOrigin
@RequestMapping(value = "/tags")
public class TagController {


    @Autowired
    private TagService tagService;

    @GetMapping
    public Result listTags() {
        List<MeTag> tags = tagService.findAll();

        return Result.success(tags);
    }

    @GetMapping("detail")
    public Result listCategorysDetail() {
        List<TagVO> categorys = tagService.findAllDetail();

        return Result.success(categorys);
    }

    @GetMapping("/hot")
    public Result listHotTags() {
        int limit = 6;
        List<MeTag> tags = tagService.listHotTags(limit);

        return Result.success(tags);
    }

    @GetMapping("/{id}")
    public Result getTagById(@PathVariable("id") Integer id) {

        Result r = new Result();

        if (null == id) {
            r.setResultCode(ResultCode.PARAM_IS_BLANK);
            return r;
        }

        MeTag tag = tagService.getTagById(id);

        r.setResultCode(ResultCode.SUCCESS);
        r.setData(tag);
        return r;
    }

    @GetMapping("/detail/{id}")
    public Result getTagDetail(@PathVariable("id") Integer id) {

        Result r = new Result();

        if (null == id) {
            r.setResultCode(ResultCode.PARAM_IS_BLANK);
            return r;
        }

        TagVO tag = tagService.getTagDetail(id);

        r.setResultCode(ResultCode.SUCCESS);
        r.setData(tag);
        return r;
    }
//
//    @PostMapping("/create")
//    @RequiresRoles(Base.ROLE_ADMIN)
//    @LogAnnotation(module = "标签", operation = "添加标签")
//    public Result saveTag(@Validated @RequestBody Tag tag) {
//
//        Integer tagId = tagService.saveTag(tag);
//
//        Result r = Result.success();
//        r.simple().put("tagId", tagId);
//        return r;
//    }
//
//    @PostMapping("/update")
//    @RequiresRoles(Base.ROLE_ADMIN)
//    @LogAnnotation(module = "标签", operation = "修改标签")
//    public Result updateTag(@RequestBody Tag tag) {
//        Result r = new Result();
//
//        if (null == tag.getId()) {
//            r.setResultCode(ResultCode.USER_NOT_EXIST);
//            return r;
//        }
//
//        Integer tagId = tagService.updateTag(tag);
//
//        r.setResultCode(ResultCode.SUCCESS);
//        r.simple().put("tagId", tagId);
//        return r;
//    }
//
//    @GetMapping("/delete/{id}")
//    @RequiresRoles(Base.ROLE_ADMIN)
//    @LogAnnotation(module = "标签", operation = "删除标签")
//    public Result deleteTagById(@PathVariable("id") Integer id) {
//        Result r = new Result();
//
//        if (null == id) {
//            r.setResultCode(ResultCode.PARAM_IS_BLANK);
//            return r;
//        }
//
//        tagService.deleteTagById(id);
//
//        r.setResultCode(ResultCode.SUCCESS);
//        return r;
//    }


}
